Page({
  data: {
    studyPlans: [], // 学习计划列表
    planStatusMap: {
      pending: '待开始',
      ongoing: '进行中',
      done: '已完成'
    },
    statusOptions: [ // 用于 picker
      { value: 'pending', label: '待开始' },
      { value: 'ongoing', label: '进行中' },
      { value: 'done', label: '已完成' }
    ],
    showDetailModal: false, // 是否显示详情弹窗
    currentPlanDetail: '' // 当前查看的计划详情内容
  },

  onLoad: function (options) {
    this.loadStudyPlans();
  },

  onPullDownRefresh: function () {
    this.loadStudyPlans();
    wx.stopPullDownRefresh(); // 处理完成后停止下拉刷新动画
    wx.showToast({ title: '已刷新', icon: 'none', duration: 1000 });
  },

  // --- 数据处理 ---
  loadStudyPlans: function() {
    const plans = wx.getStorageSync('studyPlans') || [];
    console.log('Loaded plans:', plans); // 调试用
    this.setData({ studyPlans: plans });
    if (plans.length === 0) {
        wx.setNavigationBarTitle({ title: '学习计划 (空)' });
    } else {
         wx.setNavigationBarTitle({ title: `学习计划 (${plans.length}条)` });
    }
  },

  saveStudyPlans: function() {
    wx.setStorageSync('studyPlans', this.data.studyPlans);
     // 更新导航栏标题
     if (this.data.studyPlans.length === 0) {
        wx.setNavigationBarTitle({ title: '学习计划 (空)' });
    } else {
         wx.setNavigationBarTitle({ title: `学习计划 (${this.data.studyPlans.length}条)` });
    }
  },

  findPlanIndexById: function(id) {
     return this.data.studyPlans.findIndex(plan => plan.id === id);
  },

  // --- 事件处理 ---

  // 更新状态
  updateStatus: function(e) {
    const planId = e.currentTarget.dataset.id;
    const selectedIndex = e.detail.value; // picker 返回的是 statusOptions 的索引
    const newStatus = this.data.statusOptions[selectedIndex].value;
    const planIndex = this.findPlanIndexById(planId);

    if (planIndex !== -1) {
      const currentProgress = this.data.studyPlans[planIndex].progress;
      let newProgress = currentProgress;
      // 如果状态从未完成变为完成，自动设置进度为100%
      if (this.data.studyPlans[planIndex].status !== 'done' && newStatus === 'done') {
          newProgress = 100;
      }
      // 如果状态从完成变为未完成，可以考虑重置进度或保持不变（这里保持不变）
      // else if (this.data.studyPlans[planIndex].status === 'done' && newStatus !== 'done') {
          // newProgress = ...;
      // }

      this.setData({
        [`studyPlans[${planIndex}].status`]: newStatus,
        [`studyPlans[${planIndex}].progress`]: newProgress
      });
      this.saveStudyPlans();
      wx.showToast({ title: '状态已更新', icon: 'none' });
    }
  },

  // 更新进度条
  updateProgress: function(e) {
    const planId = e.currentTarget.dataset.id;
    const newProgress = e.detail.value;
    const planIndex = this.findPlanIndexById(planId);

    if (planIndex !== -1) {
       let newStatus = this.data.studyPlans[planIndex].status;
       // 如果进度拖到100，自动设置状态为完成
       if (newProgress === 100 && newStatus !== 'done') {
           newStatus = 'done';
       }
        // 如果进度从100拖下来，并且原状态是完成，自动改为进行中
       else if (newProgress < 100 && newStatus === 'done') {
           newStatus = 'ongoing';
       }

       this.setData({
        [`studyPlans[${planIndex}].progress`]: newProgress,
        [`studyPlans[${planIndex}].status`]: newStatus
      });
      // 注意：slider 的 bindchange 事件在拖动过程中会频繁触发，
      // 为了避免频繁写入本地存储，可以在 onTouchEnd 事件中保存，或者添加节流/防抖
      // 这里为简单起见，暂时每次都保存
      this.saveStudyPlans();
    }
  },

  // 查看详情
  viewDetail: function(e) {
    const planId = e.currentTarget.dataset.id;
    const planIndex = this.findPlanIndexById(planId);
    if (planIndex !== -1) {
      const detail = this.data.studyPlans[planIndex].details || '暂无详细信息。';
      this.setData({
        currentPlanDetail: detail,
        showDetailModal: true
      });
    }
  },

  // 关闭详情弹窗
  closeDetailModal: function() {
    this.setData({ showDetailModal: false, currentPlanDetail: '' });
  },

  // 删除计划
  deletePlan: function(e) {
    const planId = e.currentTarget.dataset.id;
    const planIndex = this.findPlanIndexById(planId);
    if (planIndex !== -1) {
       const planName = this.data.studyPlans[planIndex].name;
        wx.showModal({
            title: '确认删除',
            content: `确定要删除计划 "${planName}" 吗？`,
            success: (res) => {
                if (res.confirm) {
                    const updatedPlans = [...this.data.studyPlans];
                    updatedPlans.splice(planIndex, 1);
                    this.setData({ studyPlans: updatedPlans });
                    this.saveStudyPlans();
                    wx.showToast({ title: '计划已删除', icon: 'success' });
                }
            }
        });
    }
  },

   // 返回上一页 (用于空状态按钮)
   goBack: function() {
      wx.navigateBack();
   }
}) 